package com.im.service.projectInfo.smo;

import java.util.List;
import java.util.Map;

import com.im.service.dto.BusiConstParamVal;
import com.im.service.dto.ImplementProject;
import com.im.service.dto.PageQuery;
import com.im.service.dto.PlanProject;
import com.im.service.dto.ProjectStage;
import com.im.viewmodel.projectInfo.ProjProceSubmitListReqVo;
import com.im.viewmodel.projectInfo.ProjProceSubmitListRespVo;

/**
 * 规划项目信息管理 SMO
 * @author xuwb
 * 2018年3月24日
 */
public interface IProjectInfoQuerySMO {

	/**
	 * 
	 * 规划项目分页查询
	 * @param jsonStr
	 * @return 
	 */
	PageQuery<PlanProject> queryPlanProjList(String jsonStr) throws Exception;

	/**
	 *
	 * 规划项目查询
	 * @param jsonStr
	 * @return
	 */
	List<PlanProject> queryAllPlanProjList(String jsonStr) throws Exception;

	/**
	 * 
	 * 查询规划项目详情. 
	 * @param planProj
	 * @return 
	 */
	PlanProject queryPlanProjDetail(PlanProject planProj);

	/**
	 * 
	 * 实施项目分页查询 
	 * @param jsonStr
	 * @return 
	 * @author xuwb
	 */
	PageQuery<ImplementProject> queryImpleProjList(String jsonStr) throws Exception;

	/**
	 *
	 * 实施项目分页查询
	 * @param jsonStr
	 * @return
	 * @author xuwb
	 */
	List<ImplementProject> queryAllImpleProjList(String jsonStr) throws Exception;

	/**
	 *
	 * 实施项目详情查询
	 * @param implementProject
	 * @return
	 * @author wangxh
	 */
	ImplementProject queryImpleProjDetail(ImplementProject implementProject) throws Exception;

	/**
	 *
	 * 实施项目详情关联查询
	 * @param param
	 * @return
	 * @author wangxh
	 */
	ImplementProject queryImpleProjDetailByRelated(Map<String,Object> param) throws Exception;


	/**
	 * 
	 * 根据常量编码查询常量配置
	 * @param constCode
	 * @return 
	 * @author xuwb
	 */
	List<BusiConstParamVal> queryConstListByCode(String constCode);

	/**
	 * 查询实施项目设置的所需经历的阶段信息
	 * @param projStage
	 * @return
	 * @author xuwb
	 */
	List<ProjectStage> queryImpleProjStageList(ProjectStage projStage);

	/**
	 * 填报项目进度设定---列表查询 
	 * @param jsonStr
	 * @return
	 * @author xuwenbo
	 */
	PageQuery<ImplementProject> queryImpleDeclareSetList(String jsonStr) throws Exception;
	
	/**
	 * 项目进度报送---列表查询
	 * @param jsonStr
	 * @return
	 * @author xuwenbo
	 */
	PageQuery<ProjProceSubmitListRespVo> queryProjProceSubmitList(String jsonStr) throws Exception;

}
